package main

import (
	"github/casperkwok/shortener/internal/config"
	"github/casperkwok/shortener/internal/db"
	"github/casperkwok/shortener/internal/handler"
	"log"
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {

	// 读取配置
	cfg, err := config.LoadConfig(".")
	if err != nil {
		log.Fatalf("不能读取配置: %v", err)
	}

	// 初始化数据库
	db, err := db.InitDB(cfg.DBPath)
	if err != nil {
		log.Fatalf("不能初始化数据库: %v", err)
	}

	// 创建Gin Web服务
	r := gin.Default()

	// 注册路由
	r.POST("/shorten", handler.ShortenURL(db))

	// 处理favicon.ico请求，避免被短链路由捕获
	r.GET("/favicon.ico", func(c *gin.Context) {
		c.Status(http.StatusNotFound)
	})

	r.GET("/:code", handler.RedirectURL(db))

	// 启动服务
	r.Run(cfg.ServerPort)
}
